/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wbd_au;

import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import wbd_au.browsers.WybierzJDialog;
import wbd_au.objects_mappings.Cwiczenia;
import wbd_au.objects_mappings.ObiektCwiczebny;
import wbd_au.objects_mappings.Oddzial;
import wbd_au.objects_mappings.Zolnierz;

/**
 *
 * @author Gospo
 */
public class Utils {

    public static WybierzJDialog getOddzialWybierzJDialog(JFrame frame, JComponent outComponent) {
        ArrayList<JComponent> fields = new ArrayList<>();
        ArrayList<JLabel> labels = new ArrayList<>();
        ArrayList<Object> conditionColumns = new ArrayList<>();

        fields.add(new JTextField());
        labels.add(new JLabel("Nazwa"));
        conditionColumns.add(Oddzial.Attribute.NAZWA_ODDZIALU);

        fields.add(new JComboBox(new DefaultComboBoxModel(Consts.OddzialSpecjalizacjaVal.values())));
        labels.add(new JLabel("Specjalizacja"));
        conditionColumns.add(Oddzial.Attribute.SPECJALIZACJA);

        return new WybierzJDialog(frame, true, outComponent, Oddzial.Attribute.values(), fields, labels, conditionColumns, Oddzial.class);
    }

    public static WybierzJDialog getObiektCwiczebnyWybierzJDialog(JFrame frame, JComponent outComponent) {
        ArrayList<JComponent> fields = new ArrayList<>();
        ArrayList<JLabel> labels = new ArrayList<>();
        ArrayList<Object> conditionColumns = new ArrayList<>();

        fields.add(new JTextField());
        labels.add(new JLabel("Nazwa"));
        conditionColumns.add(ObiektCwiczebny.Attribute.NAZWA);

        fields.add(new JComboBox(new DefaultComboBoxModel(Consts.ObiektCwiczebnyTypVal.values())));
        labels.add(new JLabel("Typ"));
        conditionColumns.add(ObiektCwiczebny.Attribute.TYP);

        fields.add(new JTextField());
        labels.add(new JLabel("Ilu osobowy"));
        conditionColumns.add(ObiektCwiczebny.Attribute.DLA_ILU_ZOLNIERZY);

        return new WybierzJDialog(frame, true, outComponent, ObiektCwiczebny.Attribute.values(), fields, labels, conditionColumns, ObiektCwiczebny.class);
    }

    public static WybierzJDialog getCwiczeniaWybierzJDialog(final JFrame frame, JTextField textField) {
        ArrayList<JComponent> fields = new ArrayList<>();
        ArrayList<JLabel> labels = new ArrayList<>();
        ArrayList<Object> conditionColumns = new ArrayList<>();

        final JButton idObiektuJButton = new JButton();
        idObiektuJButton.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                WybierzJDialog dialog = Utils.getObiektCwiczebnyWybierzJDialog(frame, idObiektuJButton);
                dialog.setVisible(true);
            }
        });
        fields.add(idObiektuJButton);
        labels.add(new JLabel("id obiektu"));
        conditionColumns.add(Cwiczenia.Attribute.ID_OBIEKT);

        final JButton idOddzialJButton = new JButton();
        idOddzialJButton.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                WybierzJDialog dialog = Utils.getOddzialWybierzJDialog(frame, idOddzialJButton);
                dialog.setVisible(true);
            }
        });
        fields.add(idOddzialJButton);
        labels.add(new JLabel("id oddzialu"));
        conditionColumns.add(Cwiczenia.Attribute.ID_ODDZIAL);

        JSpinner dataOdJSpinner = new JSpinner(new javax.swing.SpinnerDateModel());
        dataOdJSpinner.setEditor(new JSpinner.DateEditor(dataOdJSpinner, Consts.dateFormat));
        fields.add(dataOdJSpinner);
        labels.add(new JLabel("data od"));
        conditionColumns.add(Cwiczenia.Attribute.DATA_OD);

        JSpinner dataDoJSpinner = new JSpinner(new javax.swing.SpinnerDateModel());
        dataDoJSpinner.setEditor(new JSpinner.DateEditor(dataDoJSpinner, Consts.dateFormat));
        fields.add(dataDoJSpinner);
        labels.add(new JLabel("data do"));
        conditionColumns.add(Cwiczenia.Attribute.DATA_DO);

        return new WybierzJDialog(frame, true, textField, Cwiczenia.Attribute.values(), fields, labels, conditionColumns, Cwiczenia.class);
    }

    static WybierzJDialog getZolnierzWybierzJDialog(final JFrame frame, JComponent outComponent) {
        ArrayList<JComponent> fields = new ArrayList<>();
        ArrayList<JLabel> labels = new ArrayList<>();
        ArrayList<Object> conditionColumns = new ArrayList<>();

        fields.add(new JTextField());
        labels.add(new JLabel("Imie"));
        conditionColumns.add(Zolnierz.Attribute.IMIE);

        fields.add(new JTextField());
        labels.add(new JLabel("Nazwisko"));
        conditionColumns.add(Zolnierz.Attribute.NAZWISKO);

        fields.add(new JTextField());
        labels.add(new JLabel("Pesel"));
        conditionColumns.add(Zolnierz.Attribute.PESEL);
        
        final JButton idOddzialJButton = new JButton();
        idOddzialJButton.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                WybierzJDialog dialog = Utils.getOddzialWybierzJDialog(frame, idOddzialJButton);
                dialog.setVisible(true);
            }
        });
        fields.add(idOddzialJButton);
        labels.add(new JLabel("id oddzialu"));
        conditionColumns.add(Zolnierz.Attribute.ID_ODDZIAL);

        return new WybierzJDialog(frame, true, outComponent, Zolnierz.Attribute.values(), fields, labels, conditionColumns, Zolnierz.class);
    }
}
